/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package negocio;

import javax.management.timer.Timer;
import java.util.*;
import persistencia.PersistenciaAlquiler;
/**
 *
 * @author JAVA
 */
public class ArticuloAlquilado extends Articulo{
    private Date fechaAlquiler;
    private Date fechaEntrega;
    private List<Promocion> listap;
    private float recargo;
    private float precio;

    public float getRecargo() {
        return recargo;
    }

    public void setRecargo(float recargo) {
        this.recargo = recargo;
    }

    
    public Date getFechaEntrega() {
        return fechaEntrega;
    }

    public float getPrecio() {
        return precio;
    }

    public void setPrecio(float precio) {
        this.precio = precio;
    }

    public void setFechaEntrega(Date fechaEntrega) {
        this.fechaEntrega = fechaEntrega;
        
    }

    public Date getFechaAlquiler() {
        return fechaAlquiler;
    }

    public void setFechaAlquiler(Date fechaAlquiler) {
        this.fechaAlquiler = fechaAlquiler;
    }

    public List<Promocion> getListap() {
        return listap;
    }

    public void setListap(List<Promocion> listap) {
        this.listap = listap;
    }
   
    public void addPromocion(Promocion p){
        listap.add(p);
    }
    
    private void calcularFechaEntrega(){
        long fecha = new Date().getTime() + (super.getTarifa().getDiasAlquiler()) * Timer.ONE_DAY;
        Date fechaDevolucion = new Date(fecha);
        setFechaEntrega(fechaDevolucion);
        
    }
    
    public ArticuloAlquilado(int id,Date fechaAlta, Proveedor prove, boolean disponible, Tarifa tarifa, boolean seVende, float valoracion,String titulo,Date fechaAlquiler) {
        super(id,fechaAlta, prove, disponible, tarifa, seVende,valoracion,titulo);
        this.fechaAlquiler=fechaAlquiler;
        this.precio=super.getTarifa().getPrecioAlquiler();
        calcularFechaEntrega();
        listap=new ArrayList<Promocion>();
    }

    public ArticuloAlquilado(int id, Date fechaAlta, Proveedor prove, boolean disponible, Tarifa tarifa, boolean seVende, float valoracion, String titulo,Date fechaAlquiler, Date fechaEntrega) {
        super(id, fechaAlta, prove, disponible, tarifa, seVende, valoracion, titulo);
        this.precio=super.getTarifa().getPrecioAlquiler();
        this.fechaAlquiler=fechaAlquiler;
        this.fechaEntrega = fechaEntrega;
    }

    @Override
    public String toString() {
        return "Id: "+super.getId()+" Nombre: "+super.getTitulo()+"\nFecha de entrega: "+getFechaEntrega();
    }
    
    public static ArticuloAlquilado obtenerArticuloAlquilado(int id) throws ExcepcionPersistencia{
        ArticuloAlquilado aa=PersistenciaAlquiler.obtenerArticuloAlquilado(id);
        if(aa!=null){
            return aa;
        }else{
            throw new ExcepcionPersistencia("No se encuentra ningun articulo con dicha id");
        }
    }
    
    
}
